#!/bin/bash

#author: Sen Du
#email: dusen.me@gmail.com
#created: 2024-04-13 20:00:00
#updated: 2025-04-14 10:00:00

###### 压缩后，源文件不删除 ######

set -e 

#需要压缩的文件路径
IN_PATH='/Volumes/访谈剪辑硬盘/20250404老板圣心韬略'
#压缩后存放的路径
OUT_PATH='/Users/dusen/Editor/temp/20250404老板圣心韬略'

function main() {

    ##3. 根据目录，扫描所有符合条件的视频文件（大于 10MB，且非 1 080p 和加密文件）
    files=$(find "$IN_PATH" -type f -size +10M \( -name "*.mp4" -o -name "*.MP4" -o -name "*.MTS" -o -name "*.mov" \) | grep -v '1080p' | grep -v '🔒' )
    
    for file in ${files[@]}; do
        # 获取原始文件的相对路径，构建在压缩目录的存放路径
        relative_path="${file#$IN_PATH/}"
        newFile="$OUT_PATH/$relative_path"
        newDir="$(dirname "$newFile")"
        
        # 创建目标目录
        mkdir -p "$newDir"
        
        # 替换文件名，加上 .1080p.mp4 后缀
        newFile="${newFile%.*}.1080p.mp4"
        
        # 如果目标文件已存在，则跳过压缩
        if [[ -f "$newFile" ]]; then
            echo "[$(date +%Y%m%d%H%M%S)] File already exists, skipping: $newFile"
            continue
        fi
        
        echo "[$(date +%Y%m%d%H%M%S)] reduce start..."
        echo "OldFile: $file"
        echo "NewFile: $newFile"
        
        ##4. 调用 HandBrake 工具对视频进行压缩
        if HandBrakeCLI -i "$escapedFile" -o "$newFile" --preset-import-gui --preset="Very Fast 1080p30" --rate=24; then
            echo "[$(date +%Y%m%d%H%M%S)] reduce success."
        else
            echo "[$(date +%Y%m%d%H%M%S)] reduce failed!"
        fi
    done
}

main
